Swing - الكلاس GridBagLayout

Java Swing  الكلاس GridBagLayout

مقدمة Swing - الكلاس GridBagLayout

الكلاس GridBagLayout يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة يمكن تعديل أحجامها و مكان ظهورها.

هنا يجب أن يتم ربط كل شيء يتم إضافته بكائن من الكلاس GridBagConstraints و الذي بدوره يحدد حجمه و موقعه.


بنا Swing - الكلاس GridBagLayout

public class GridBagLayout
extends Object
implements LayoutManager2, Serializable
	

دوال الكلاس GridBagLayout

الجدول التالي يحتوي على أهم الدوال الموجودة في الكلاس GridBagLayout.

الدالة مع تعريفها
public void addLayoutComponent(Component comp, Object constraints) تستخدم لإضافة أي شيء مع تحديد حجمه و مكان وضعه في النافذة أو الحاوية.

  • مكان الباراميتر comp نضع الشيء الذي نريد إضافته.

  • مكان الباراميتر constraints نضع كائن من الكلاس GridBagConstraints يمثل حجم و موقع الشيء الذي نريد إضافته.


ترمي الإستثناء IllegalArgumentException في حال لم يتم وضع كائن من الكلاس GridBagConstraints مكان الباراميتر constraints.

  طريقة ترتيب محتوى الـ JFrame بواسطة الكلاس GridBagLayout

المثال التالي يعلمك طريقة ترتيب محتوى الـ Frame بواسطة الكلاس GridBagLayout و الكلاس GridBagConstraints.


مثال طريقة ترتيب محتوى الـ Frame بواسطة الكلاس GridBagLayout و الكلاس GridBagConstraints.

Main.java
					import javax.swing.JFrame;
					import javax.swing.JButton;
					import java.awt.GridBagLayout;
					import java.awt.GridBagConstraints;

					public class Main {

					public static void main(String[] args) {

					JFrame frame = new JFrame("GridBagLayout demo");        // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
					frame.setSize(300, 300);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300
					frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
					frame.setLayout(new GridBagLayout());                   // لترتيب الأشياء التي نضيفها بداخلها GridBagLayout هنا جعلنا النافذة تستخدم الـ

					// هنا قمنا بتعريف 10 أزرار
					JButton b1 = new JButton("1");
					JButton b2 = new JButton("2");
					JButton b3 = new JButton("3");
					JButton b4 = new JButton("4");
					JButton b5 = new JButton("5");
					JButton b6 = new JButton("6");
					JButton b7 = new JButton("7");
					JButton b8 = new JButton("8");
					JButton b9 = new JButton("9");
					JButton b10 = new JButton("10");

					// لتحديد مكان كل شيء بداخل النافذة GridBagConstraints هنا قمنا بتعريف كائن من الكلاس
					GridBagConstraints gbc = new GridBagConstraints();

					// يتأثر بكامل المساحة المتوفرة من النافذة بالإتجاهين الأفقي و العامودي gbc هنا جعلنا الـ
					gbc.fill = GridBagConstraints.BOTH;

					// هنا جعلنا نسبة الجذب الأفقية و العامودية متساوي حتى يكون المحتوى دائماً مطابق لحجم الشاشة
					gbc.weightx = 1;
					gbc.weighty = 1;

					// هنا أضفنا أول ثلاث أزرار في أول سطر
					frame.add(b1, gbc);
					frame.add(b2, gbc);
					frame.add(b3, gbc);

					// هنا أضفنا الزر الرابع كآخر زر في السطر الأول
					gbc.gridwidth = GridBagConstraints.REMAINDER;
					frame.add(b4, gbc);

					// هنا أضفنا الزر الخامس لوحده و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر الثاني هنا
					frame.add(b5, gbc);

					// هنا أضفنا الزر السادس نسبة للزر الخامس, أي سيوضع بعد الزر الخامس و على سطر جديد و الذي سيكون السطر الثالث هنا
					gbc.gridwidth = GridBagConstraints.RELATIVE;
					frame.add(b6, gbc);

					// هنا أضفنا الزر السابع كآخر زر في نفس السطر الموجود فيه الزر السادس
					gbc.gridwidth = GridBagConstraints.REMAINDER;
					frame.add(b7, gbc);

					// هنا أضفنا الزر الثامن و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر الرابع هنا
					gbc.gridwidth = 1;
					gbc.gridheight = 2;     // هنا جعلناه طوله مضاعف, أي سيظهر أيضاً على السطر الخامس
					frame.add(b8, gbc);

					// هنا أضفنا الزر التاسع كآخر زر في نفس السطر الموجود فيه الزر الثامن
					gbc.gridwidth = GridBagConstraints.REMAINDER;
					gbc.gridheight = 1;
					frame.add(b9, gbc);

					// هنا أضفنا الزر العاشر كآخر زر في نفس السطر الموجود فيه الزر التاسع
					frame.add(b10, gbc);

					// هنا جعلنا النافذة مرئية
					frame.setVisible(true);

					}

					}
				  

ستظهر لك النافذة التالية عند التشغيل.

طريقة ترتيب محتوى ال JFrame بواسطة الكلاس GridBagLayout في جافا

دورة تعلم الجافا Swing